package com.restaurant.application.indexes.bookingsetlist.mysql;

import com.google.common.collect.Lists;
import com.nebutown.generation.Convert;
import com.nebutown.generation.PickableBean;
import com.nebutown.generation.basictype.UID;

import java.util.List;

public class BookingSetListCriteria implements PickableBean {

    public static final String FN_RECORDID = "recordId";
    public static final String FN_BOOKINGSETEQUALS = "bookingSetEquals";
    public static final String FN_BOOKINGSETNOTEQUALS = "bookingSetNotEquals";
    public static final String FN_IDLIKE = "idLike";
    public static final String FN_IDEQUALS = "idEquals";
    public static final String FN_IDNOTEQUALS = "idNotEquals";
    public static final String FN_DATESLIKE = "datesLike";
    public static final String FN_DATESEQUALS = "datesEquals";
    public static final String FN_DATESNOTEQUALS = "datesNotEquals";
    public static final String FN_TIMESLIKE = "timesLike";
    public static final String FN_TIMESEQUALS = "timesEquals";
    public static final String FN_TIMESNOTEQUALS = "timesNotEquals";
    public static final String FN_SERVICELIKE = "serviceLike";
    public static final String FN_SERVICEEQUALS = "serviceEquals";
    public static final String FN_SERVICENOTEQUALS = "serviceNotEquals";
    public static final String FN_CREATETIMEUPPER = "createTimeUpper";
    public static final String FN_CREATETIMELOWER = "createTimeLower";
    public static final String FN_CREATETIMEEQUALS = "createTimeEquals";
    public static final String FN_CREATETIMENOTEQUALS = "createTimeNotEquals";
    public static final String FN_MODIFYTIMEUPPER = "modifyTimeUpper";
    public static final String FN_MODIFYTIMELOWER = "modifyTimeLower";
    public static final String FN_MODIFYTIMEEQUALS = "modifyTimeEquals";
    public static final String FN_MODIFYTIMENOTEQUALS = "modifyTimeNotEquals";
    public static final String FN_SHOPEQUALS = "shopEquals";
    public static final String FN_SHOPNOTEQUALS = "shopNotEquals";
    public static final String FN_SHOPIDLIKE = "shopIdLike";
    public static final String FN_SHOPIDEQUALS = "shopIdEquals";
    public static final String FN_SHOPIDNOTEQUALS = "shopIdNotEquals";
    public static final String FN_SHOPNAMELIKE = "shopNameLike";
    public static final String FN_SHOPNAMEEQUALS = "shopNameEquals";
    public static final String FN_SHOPNAMENOTEQUALS = "shopNameNotEquals";

    public static final List<String> FIELD_NAMES = Lists.newArrayList(
            FN_RECORDID,
            FN_BOOKINGSETEQUALS,
            FN_BOOKINGSETNOTEQUALS,
            FN_IDLIKE,
            FN_IDEQUALS,
            FN_IDNOTEQUALS,
            FN_DATESLIKE,
            FN_DATESEQUALS,
            FN_DATESNOTEQUALS,
            FN_TIMESLIKE,
            FN_TIMESEQUALS,
            FN_TIMESNOTEQUALS,
            FN_SERVICELIKE,
            FN_SERVICEEQUALS,
            FN_SERVICENOTEQUALS,
            FN_CREATETIMEUPPER,
            FN_CREATETIMELOWER,
            FN_CREATETIMEEQUALS,
            FN_CREATETIMENOTEQUALS,
            FN_MODIFYTIMEUPPER,
            FN_MODIFYTIMELOWER,
            FN_MODIFYTIMEEQUALS,
            FN_MODIFYTIMENOTEQUALS,
            FN_SHOPEQUALS,
            FN_SHOPNOTEQUALS,
            FN_SHOPIDLIKE,
            FN_SHOPIDEQUALS,
            FN_SHOPIDNOTEQUALS,
            FN_SHOPNAMELIKE,
            FN_SHOPNAMEEQUALS,
            FN_SHOPNAMENOTEQUALS);
    
    private Long recordId;
    private UID bookingSetEquals;
    private UID bookingSetNotEquals;
    private String idLike;
    private String idEquals;
    private String idNotEquals;
    private String datesLike;
    private String datesEquals;
    private String datesNotEquals;
    private String timesLike;
    private String timesEquals;
    private String timesNotEquals;
    private String serviceLike;
    private String serviceEquals;
    private String serviceNotEquals;
    private Long createTimeUpper;
    private Long createTimeLower;
    private Long createTimeEquals;
    private Long createTimeNotEquals;
    private Long modifyTimeUpper;
    private Long modifyTimeLower;
    private Long modifyTimeEquals;
    private Long modifyTimeNotEquals;
    private UID shopEquals;
    private UID shopNotEquals;
    private String shopIdLike;
    private String shopIdEquals;
    private String shopIdNotEquals;
    private String shopNameLike;
    private String shopNameEquals;
    private String shopNameNotEquals;

    public BookingSetListCriteria(Long recordId, UID bookingSetEquals, UID bookingSetNotEquals, String idLike, String idEquals, String idNotEquals, String datesLike, String datesEquals, String datesNotEquals, String timesLike, String timesEquals, String timesNotEquals, String serviceLike, String serviceEquals, String serviceNotEquals, Long createTimeUpper, Long createTimeLower, Long createTimeEquals, Long createTimeNotEquals, Long modifyTimeUpper, Long modifyTimeLower, Long modifyTimeEquals, Long modifyTimeNotEquals, UID shopEquals, UID shopNotEquals, String shopIdLike, String shopIdEquals, String shopIdNotEquals, String shopNameLike, String shopNameEquals, String shopNameNotEquals) {
        setRecordId(recordId);
        setBookingSetEquals(bookingSetEquals);
        setBookingSetNotEquals(bookingSetNotEquals);
        setIdLike(idLike);
        setIdEquals(idEquals);
        setIdNotEquals(idNotEquals);
        setDatesLike(datesLike);
        setDatesEquals(datesEquals);
        setDatesNotEquals(datesNotEquals);
        setTimesLike(timesLike);
        setTimesEquals(timesEquals);
        setTimesNotEquals(timesNotEquals);
        setServiceLike(serviceLike);
        setServiceEquals(serviceEquals);
        setServiceNotEquals(serviceNotEquals);
        setCreateTimeUpper(createTimeUpper);
        setCreateTimeLower(createTimeLower);
        setCreateTimeEquals(createTimeEquals);
        setCreateTimeNotEquals(createTimeNotEquals);
        setModifyTimeUpper(modifyTimeUpper);
        setModifyTimeLower(modifyTimeLower);
        setModifyTimeEquals(modifyTimeEquals);
        setModifyTimeNotEquals(modifyTimeNotEquals);
        setShopEquals(shopEquals);
        setShopNotEquals(shopNotEquals);
        setShopIdLike(shopIdLike);
        setShopIdEquals(shopIdEquals);
        setShopIdNotEquals(shopIdNotEquals);
        setShopNameLike(shopNameLike);
        setShopNameEquals(shopNameEquals);
        setShopNameNotEquals(shopNameNotEquals);
    }

    public BookingSetListCriteria() {
    }

    public BookingSetListCriteria duplicate() {
        BookingSetListCriteria result = new BookingSetListCriteria();
        result.recordId = this.recordId;
        result.bookingSetEquals = this.bookingSetEquals;
        result.bookingSetNotEquals = this.bookingSetNotEquals;
        result.idLike = this.idLike;
        result.idEquals = this.idEquals;
        result.idNotEquals = this.idNotEquals;
        result.datesLike = this.datesLike;
        result.datesEquals = this.datesEquals;
        result.datesNotEquals = this.datesNotEquals;
        result.timesLike = this.timesLike;
        result.timesEquals = this.timesEquals;
        result.timesNotEquals = this.timesNotEquals;
        result.serviceLike = this.serviceLike;
        result.serviceEquals = this.serviceEquals;
        result.serviceNotEquals = this.serviceNotEquals;
        result.createTimeUpper = this.createTimeUpper;
        result.createTimeLower = this.createTimeLower;
        result.createTimeEquals = this.createTimeEquals;
        result.createTimeNotEquals = this.createTimeNotEquals;
        result.modifyTimeUpper = this.modifyTimeUpper;
        result.modifyTimeLower = this.modifyTimeLower;
        result.modifyTimeEquals = this.modifyTimeEquals;
        result.modifyTimeNotEquals = this.modifyTimeNotEquals;
        result.shopEquals = this.shopEquals;
        result.shopNotEquals = this.shopNotEquals;
        result.shopIdLike = this.shopIdLike;
        result.shopIdEquals = this.shopIdEquals;
        result.shopIdNotEquals = this.shopIdNotEquals;
        result.shopNameLike = this.shopNameLike;
        result.shopNameEquals = this.shopNameEquals;
        result.shopNameNotEquals = this.shopNameNotEquals;
        return result;
    }

    @Override
    public String toString() {
        return Convert.toJson(this);
    }

    public Long getRecordId() {
        return recordId;
    }

    public void setRecordId(Long value) {
        this.recordId = value;
    }

    public BookingSetListCriteria withRecordId(Long value) {
        setRecordId(value);
        return this;
    }

    public BookingSetListCriteria withRecordId(Long value, Long defaultValue) {
        setRecordId(value == null ? defaultValue : value);
        return this;
    }

    public UID getBookingSetEquals() {
        return bookingSetEquals;
    }

    public void setBookingSetEquals(UID value) {
        this.bookingSetEquals = value;
    }

    public BookingSetListCriteria withBookingSetEquals(UID value) {
        setBookingSetEquals(value);
        return this;
    }

    public BookingSetListCriteria withBookingSetEquals(UID value, UID defaultValue) {
        setBookingSetEquals(value == null ? defaultValue : value);
        return this;
    }

    public UID getBookingSetNotEquals() {
        return bookingSetNotEquals;
    }

    public void setBookingSetNotEquals(UID value) {
        this.bookingSetNotEquals = value;
    }

    public BookingSetListCriteria withBookingSetNotEquals(UID value) {
        setBookingSetNotEquals(value);
        return this;
    }

    public BookingSetListCriteria withBookingSetNotEquals(UID value, UID defaultValue) {
        setBookingSetNotEquals(value == null ? defaultValue : value);
        return this;
    }

    public String getIdLike() {
        return idLike;
    }

    public void setIdLike(String value) {
        this.idLike = value;
    }

    public BookingSetListCriteria withIdLike(String value) {
        setIdLike(value);
        return this;
    }

    public BookingSetListCriteria withIdLike(String value, String defaultValue) {
        setIdLike(value == null ? defaultValue : value);
        return this;
    }

    public String getIdEquals() {
        return idEquals;
    }

    public void setIdEquals(String value) {
        this.idEquals = value;
    }

    public BookingSetListCriteria withIdEquals(String value) {
        setIdEquals(value);
        return this;
    }

    public BookingSetListCriteria withIdEquals(String value, String defaultValue) {
        setIdEquals(value == null ? defaultValue : value);
        return this;
    }

    public String getIdNotEquals() {
        return idNotEquals;
    }

    public void setIdNotEquals(String value) {
        this.idNotEquals = value;
    }

    public BookingSetListCriteria withIdNotEquals(String value) {
        setIdNotEquals(value);
        return this;
    }

    public BookingSetListCriteria withIdNotEquals(String value, String defaultValue) {
        setIdNotEquals(value == null ? defaultValue : value);
        return this;
    }

    public String getDatesLike() {
        return datesLike;
    }

    public void setDatesLike(String value) {
        this.datesLike = value;
    }

    public BookingSetListCriteria withDatesLike(String value) {
        setDatesLike(value);
        return this;
    }

    public BookingSetListCriteria withDatesLike(String value, String defaultValue) {
        setDatesLike(value == null ? defaultValue : value);
        return this;
    }

    public String getDatesEquals() {
        return datesEquals;
    }

    public void setDatesEquals(String value) {
        this.datesEquals = value;
    }

    public BookingSetListCriteria withDatesEquals(String value) {
        setDatesEquals(value);
        return this;
    }

    public BookingSetListCriteria withDatesEquals(String value, String defaultValue) {
        setDatesEquals(value == null ? defaultValue : value);
        return this;
    }

    public String getDatesNotEquals() {
        return datesNotEquals;
    }

    public void setDatesNotEquals(String value) {
        this.datesNotEquals = value;
    }

    public BookingSetListCriteria withDatesNotEquals(String value) {
        setDatesNotEquals(value);
        return this;
    }

    public BookingSetListCriteria withDatesNotEquals(String value, String defaultValue) {
        setDatesNotEquals(value == null ? defaultValue : value);
        return this;
    }
    
    public String getTimesLike() {
        return timesLike;
    }

    public void setTimesLike(String value) {
        this.timesLike = value;
    }

    public BookingSetListCriteria withTimesLike(String value) {
        setTimesLike(value);
        return this;
    }

    public BookingSetListCriteria withTimesLike(String value, String defaultValue) {
        setTimesLike(value == null ? defaultValue : value);
        return this;
    }

    public String getTimesEquals() {
        return timesEquals;
    }

    public void setTimesEquals(String value) {
        this.timesEquals = value;
    }

    public BookingSetListCriteria withTimesEquals(String value) {
        setTimesEquals(value);
        return this;
    }

    public BookingSetListCriteria withTimesEquals(String value, String defaultValue) {
        setTimesEquals(value == null ? defaultValue : value);
        return this;
    }

    public String getTimesNotEquals() {
        return timesNotEquals;
    }

    public void setTimesNotEquals(String value) {
        this.timesNotEquals = value;
    }

    public BookingSetListCriteria withTimesNotEquals(String value) {
        setTimesNotEquals(value);
        return this;
    }

    public BookingSetListCriteria withTimesNotEquals(String value, String defaultValue) {
        setTimesNotEquals(value == null ? defaultValue : value);
        return this;
    }

    public String getServiceLike() {
        return serviceLike;
    }

    public void setServiceLike(String value) {
        this.serviceLike = value;
    }

    public BookingSetListCriteria withServiceLike(String value) {
        setServiceLike(value);
        return this;
    }

    public BookingSetListCriteria withServiceLike(String value, String defaultValue) {
        setServiceLike(value == null ? defaultValue : value);
        return this;
    }

    public String getServiceEquals() {
        return serviceEquals;
    }

    public void setServiceEquals(String value) {
        this.serviceEquals = value;
    }

    public BookingSetListCriteria withServiceEquals(String value) {
        setServiceEquals(value);
        return this;
    }

    public BookingSetListCriteria withServiceEquals(String value, String defaultValue) {
        setServiceEquals(value == null ? defaultValue : value);
        return this;
    }

    public String getServiceNotEquals() {
        return serviceNotEquals;
    }

    public void setServiceNotEquals(String value) {
        this.serviceNotEquals = value;
    }

    public BookingSetListCriteria withServiceNotEquals(String value) {
        setServiceNotEquals(value);
        return this;
    }

    public BookingSetListCriteria withServiceNotEquals(String value, String defaultValue) {
        setServiceNotEquals(value == null ? defaultValue : value);
        return this;
    }

    public Long getCreateTimeUpper() {
        return createTimeUpper;
    }

    public void setCreateTimeUpper(Long value) {
        this.createTimeUpper = value;
    }

    public BookingSetListCriteria withCreateTimeUpper(Long value) {
        setCreateTimeUpper(value);
        return this;
    }

    public BookingSetListCriteria withCreateTimeUpper(Long value, Long defaultValue) {
        setCreateTimeUpper(value == null ? defaultValue : value);
        return this;
    }

    public Long getCreateTimeLower() {
        return createTimeLower;
    }

    public void setCreateTimeLower(Long value) {
        this.createTimeLower = value;
    }

    public BookingSetListCriteria withCreateTimeLower(Long value) {
        setCreateTimeLower(value);
        return this;
    }

    public BookingSetListCriteria withCreateTimeLower(Long value, Long defaultValue) {
        setCreateTimeLower(value == null ? defaultValue : value);
        return this;
    }

    public Long getCreateTimeEquals() {
        return createTimeEquals;
    }

    public void setCreateTimeEquals(Long value) {
        this.createTimeEquals = value;
    }

    public BookingSetListCriteria withCreateTimeEquals(Long value) {
        setCreateTimeEquals(value);
        return this;
    }

    public BookingSetListCriteria withCreateTimeEquals(Long value, Long defaultValue) {
        setCreateTimeEquals(value == null ? defaultValue : value);
        return this;
    }

    public Long getCreateTimeNotEquals() {
        return createTimeNotEquals;
    }

    public void setCreateTimeNotEquals(Long value) {
        this.createTimeNotEquals = value;
    }

    public BookingSetListCriteria withCreateTimeNotEquals(Long value) {
        setCreateTimeNotEquals(value);
        return this;
    }

    public BookingSetListCriteria withCreateTimeNotEquals(Long value, Long defaultValue) {
        setCreateTimeNotEquals(value == null ? defaultValue : value);
        return this;
    }

    public Long getModifyTimeUpper() {
        return modifyTimeUpper;
    }

    public void setModifyTimeUpper(Long value) {
        this.modifyTimeUpper = value;
    }

    public BookingSetListCriteria withModifyTimeUpper(Long value) {
        setModifyTimeUpper(value);
        return this;
    }

    public BookingSetListCriteria withModifyTimeUpper(Long value, Long defaultValue) {
        setModifyTimeUpper(value == null ? defaultValue : value);
        return this;
    }

    public Long getModifyTimeLower() {
        return modifyTimeLower;
    }

    public void setModifyTimeLower(Long value) {
        this.modifyTimeLower = value;
    }

    public BookingSetListCriteria withModifyTimeLower(Long value) {
        setModifyTimeLower(value);
        return this;
    }

    public BookingSetListCriteria withModifyTimeLower(Long value, Long defaultValue) {
        setModifyTimeLower(value == null ? defaultValue : value);
        return this;
    }

    public Long getModifyTimeEquals() {
        return modifyTimeEquals;
    }

    public void setModifyTimeEquals(Long value) {
        this.modifyTimeEquals = value;
    }

    public BookingSetListCriteria withModifyTimeEquals(Long value) {
        setModifyTimeEquals(value);
        return this;
    }

    public BookingSetListCriteria withModifyTimeEquals(Long value, Long defaultValue) {
        setModifyTimeEquals(value == null ? defaultValue : value);
        return this;
    }

    public Long getModifyTimeNotEquals() {
        return modifyTimeNotEquals;
    }

    public void setModifyTimeNotEquals(Long value) {
        this.modifyTimeNotEquals = value;
    }

    public BookingSetListCriteria withModifyTimeNotEquals(Long value) {
        setModifyTimeNotEquals(value);
        return this;
    }

    public BookingSetListCriteria withModifyTimeNotEquals(Long value, Long defaultValue) {
        setModifyTimeNotEquals(value == null ? defaultValue : value);
        return this;
    }

    public UID getShopEquals() {
        return shopEquals;
    }

    public void setShopEquals(UID value) {
        this.shopEquals = value;
    }

    public BookingSetListCriteria withShopEquals(UID value) {
        setShopEquals(value);
        return this;
    }

    public BookingSetListCriteria withShopEquals(UID value, UID defaultValue) {
        setShopEquals(value == null ? defaultValue : value);
        return this;
    }

    public UID getShopNotEquals() {
        return shopNotEquals;
    }

    public void setShopNotEquals(UID value) {
        this.shopNotEquals = value;
    }

    public BookingSetListCriteria withShopNotEquals(UID value) {
        setShopNotEquals(value);
        return this;
    }

    public BookingSetListCriteria withShopNotEquals(UID value, UID defaultValue) {
        setShopNotEquals(value == null ? defaultValue : value);
        return this;
    }

    public String getShopIdLike() {
        return shopIdLike;
    }

    public void setShopIdLike(String value) {
        this.shopIdLike = value;
    }

    public BookingSetListCriteria withShopIdLike(String value) {
        setShopIdLike(value);
        return this;
    }

    public BookingSetListCriteria withShopIdLike(String value, String defaultValue) {
        setShopIdLike(value == null ? defaultValue : value);
        return this;
    }

    public String getShopIdEquals() {
        return shopIdEquals;
    }

    public void setShopIdEquals(String value) {
        this.shopIdEquals = value;
    }

    public BookingSetListCriteria withShopIdEquals(String value) {
        setShopIdEquals(value);
        return this;
    }

    public BookingSetListCriteria withShopIdEquals(String value, String defaultValue) {
        setShopIdEquals(value == null ? defaultValue : value);
        return this;
    }

    public String getShopIdNotEquals() {
        return shopIdNotEquals;
    }

    public void setShopIdNotEquals(String value) {
        this.shopIdNotEquals = value;
    }

    public BookingSetListCriteria withShopIdNotEquals(String value) {
        setShopIdNotEquals(value);
        return this;
    }

    public BookingSetListCriteria withShopIdNotEquals(String value, String defaultValue) {
        setShopIdNotEquals(value == null ? defaultValue : value);
        return this;
    }

    public String getShopNameLike() {
        return shopNameLike;
    }

    public void setShopNameLike(String value) {
        this.shopNameLike = value;
    }

    public BookingSetListCriteria withShopNameLike(String value) {
        setShopNameLike(value);
        return this;
    }

    public BookingSetListCriteria withShopNameLike(String value, String defaultValue) {
        setShopNameLike(value == null ? defaultValue : value);
        return this;
    }

    public String getShopNameEquals() {
        return shopNameEquals;
    }

    public void setShopNameEquals(String value) {
        this.shopNameEquals = value;
    }

    public BookingSetListCriteria withShopNameEquals(String value) {
        setShopNameEquals(value);
        return this;
    }

    public BookingSetListCriteria withShopNameEquals(String value, String defaultValue) {
        setShopNameEquals(value == null ? defaultValue : value);
        return this;
    }

    public String getShopNameNotEquals() {
        return shopNameNotEquals;
    }

    public void setShopNameNotEquals(String value) {
        this.shopNameNotEquals = value;
    }

    public BookingSetListCriteria withShopNameNotEquals(String value) {
        setShopNameNotEquals(value);
        return this;
    }

    public BookingSetListCriteria withShopNameNotEquals(String value, String defaultValue) {
        setShopNameNotEquals(value == null ? defaultValue : value);
        return this;
    }

    public Object getValueOf(String name) {
        switch (name) {
            case "recordId":
                return getRecordId();
            case "bookingSetEquals":
                return getBookingSetEquals();
            case "bookingSetNotEquals":
                return getBookingSetNotEquals();
            case "idLike":
                return getIdLike();
            case "idEquals":
                return getIdEquals();
            case "idNotEquals":
                return getIdNotEquals();
            case "datesLike":
                return getDatesLike();
            case "datesEquals":
                return getDatesEquals();
            case "datesNotEquals":
                return getDatesNotEquals();
            case "timesLike":
                return getTimesLike();
            case "timesEquals":
                return getTimesEquals();
            case "timesNotEquals":
                return getTimesNotEquals();
            case "serviceLike":
                return getServiceLike();
            case "serviceEquals":
                return getServiceEquals();
            case "serviceNotEquals":
                return getServiceNotEquals();
            case "createTimeUpper":
                return getCreateTimeUpper();
            case "createTimeLower":
                return getCreateTimeLower();
            case "createTimeEquals":
                return getCreateTimeEquals();
            case "createTimeNotEquals":
                return getCreateTimeNotEquals();
            case "modifyTimeUpper":
                return getModifyTimeUpper();
            case "modifyTimeLower":
                return getModifyTimeLower();
            case "modifyTimeEquals":
                return getModifyTimeEquals();
            case "modifyTimeNotEquals":
                return getModifyTimeNotEquals();
            case "shopEquals":
                return getShopEquals();
            case "shopNotEquals":
                return getShopNotEquals();
            case "shopIdLike":
                return getShopIdLike();
            case "shopIdEquals":
                return getShopIdEquals();
            case "shopIdNotEquals":
                return getShopIdNotEquals();
            case "shopNameLike":
                return getShopNameLike();
            case "shopNameEquals":
                return getShopNameEquals();
            case "shopNameNotEquals":
                return getShopNameNotEquals();
        }
        return null;
    }

    public boolean hasField(String name) {
        return FIELD_NAMES.contains(name);
    }

    @Override
    public int hashCode() {
        return signature().hashCode();
    }

    @Override
    public boolean equals(Object o) {
        if (!(o instanceof BookingSetListCriteria)) return false;
        return signature().equals(((BookingSetListCriteria) o).signature());
    }

    public String signature() {
        throw new RuntimeException("Bean BookingSetListCriteria has no signature defined, no hash code or equals possible.");
    }
}
